package com.fileupload.process;

/**
 * 文件操作类型枚举
 * 定义文件处理的各种操作类型，避免硬编码字符串
 */
public enum FileAction {
    /**
     * 删除文件操作
     */
    DELETE("delete", "删除文件"),
    
    /**
     * 移动文件操作
     */
    MOVE("move", "移动文件");
    
    private final String value;
    private final String description;
    
    /**
     * 构造函数
     * @param value 操作类型值
     * @param description 操作类型描述
     */
    FileAction(String value, String description) {
        this.value = value;
        this.description = description;
    }
    
    /**
     * 获取操作类型值
     * @return 操作类型字符串值
     */
    public String getValue() {
        return value;
    }
    
    /**
     * 获取操作类型描述
     * @return 操作类型描述
     */
    public String getDescription() {
        return description;
    }
    
    /**
     * 根据字符串值获取对应的枚举实例
     * @param value 操作类型字符串值
     * @return 对应的枚举实例，如果没有匹配的则返回null
     */
    public static FileAction fromValue(String value) {
        if (value == null || value.isEmpty()) {
            return null;
        }
        
        for (FileAction action : FileAction.values()) {
            if (action.value.equalsIgnoreCase(value)) {
                return action;
            }
        }
        return null;
    }
}